/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.edu.ifrs.modelo;

import br.edu.ifrs.util.Conexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author IFRS-Restinga
 */
public class Sala {

    private int numero;
    private String nome;
    private int quantidade;
    private int tamanho_tela;
    private Boolean tela3d;
    private Boolean acessibilidade;

    public Sala() {
        this.numero = 0;
        this.nome = "";
        this.quantidade = 0;
        this.tamanho_tela = 0;
        this.tela3d = false;
        this.acessibilidade = false;
    }

    public void inserir() throws Exception {
        Connection con = null;
        PreparedStatement pstmt = null;
        try {
            // Conexão com o banco de dados
            con = Conexao.abrirConexao();

            // Criar o prepareStatement
            pstmt = con.prepareStatement("insert into Sala (numero, nome, quantidade, tamanho_tela, tela3d, acessibilidade) values (?, ?, ?, ?, ?, ?)");

            // Setar os parâmetros o prepareStatement
            pstmt.setInt(1, getNumero());
            pstmt.setString(2, getNome());
            pstmt.setInt(3, getQuantidade());
            pstmt.setInt(4, getTamanho_tela());
            pstmt.setBoolean(5, getTela3d());
            pstmt.setBoolean(6, getAcessibilidade());

            // Executar o prepareStatement
            pstmt.execute();
        } catch (Exception ex) {
            throw new Exception("Falha na Classe Sala: " + ex.getMessage());
        } finally {
            pstmt.close();
            con.close();
        }
    }

    public void atualizar() throws Exception {
        Connection con = null;
        PreparedStatement pstmt = null;
        try {
            // Conexão com o banco de dados
            con = Conexao.abrirConexao();

            // Criar o prepareStatement
            pstmt = con.prepareStatement("update Sala set nome = ?, quantidade = ?, tamanho_tela = ?, tela3d = ?, acessibilidade = ?  where numero = ?");

            // Setar os parâmetros o prepareStatement
            pstmt.setString(1, getNome());
            pstmt.setInt(2, getQuantidade());
            pstmt.setInt(3, getTamanho_tela());
            pstmt.setBoolean(4, getTela3d());
            pstmt.setBoolean(5, getAcessibilidade());
            pstmt.setInt(6, getNumero());

            // Executar o prepareStatement
            pstmt.execute();
        } catch (Exception ex) {
            throw new Exception("Falha na Classe Salas: " + ex.getMessage());
        } finally {
            pstmt.close();
            con.close();
        }
    }

    public void excluir() throws Exception {
        Connection con = null;
        PreparedStatement pstmt = null;
        try {
            // Conexão com o banco de dados
            con = Conexao.abrirConexao();

            // Criar o prepareStatement
            pstmt = con.prepareStatement("delete from Sala where numero = ?");

            // Setar os parâmetros o prepareStatement
            pstmt.setInt(1, getNumero());

            // Executar o prepareStatement
            pstmt.execute();
        } catch (Exception ex) {
            throw new Exception("Falha na Classe Sala: " + ex.getMessage());
        } finally {
            pstmt.close();
            con.close();
        }
    }

    public Sala[] consultar() throws Exception {
        Connection con = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        ArrayList lista = new ArrayList();
        try {
            // Conexão com o banco de dados
            con = Conexao.abrirConexao();

            // Criar o prepareStatement
            pstmt = con.prepareStatement("select * from Sala order by nome");
            // Setar os parâmetros o prepareStatement
            // Executar o prepareStatement
            rs = pstmt.executeQuery();
            // Gerar um array de cliente
            while (rs.next() == true) {
                Sala e;
                e = new Sala();
                e.setNumero(rs.getInt("numero"));
                e.setNome(rs.getString("nome"));
                e.setQuantidade(rs.getInt("quantidade"));
                e.setTamanho_tela(rs.getInt("tamanho_tela"));
                e.setTela3d(rs.getBoolean("tela3d"));
                e.setAcessibilidade(rs.getBoolean("acessibilidade"));

                lista.add(e);
            }
        } catch (Exception ex) {
            throw new Exception("Falha na Classe Sala: " + ex.getMessage());
        } finally {
            if (rs != null) {
                rs.close();
            }
            if (pstmt != null) {
                pstmt.close();
            }
            if (con != null) {
                con.close();
            }
        }

        return (Sala[]) lista.toArray(new Sala[0]);
    }

    public void buscarDados() throws Exception {
        Connection con = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;

        try {
            // Conexão com o banco de dados
            con = Conexao.abrirConexao();

            // Criar o prepareStatement
            pstmt = con.prepareStatement("select * from Sala where numero = ? ");
            // Setar os parâmetros o prepareStatement
            pstmt.setInt(1, this.numero);
            // Executar o prepareStatement
            rs = pstmt.executeQuery();
            // Gerar um array de cliente
            if (rs.next() == true) {
                this.setNumero(rs.getInt("numero"));
                this.setNome(rs.getString("nome"));
                this.setQuantidade(rs.getInt("quantidade"));
                this.setTamanho_tela(rs.getInt("tamanho_tela"));
                this.setTela3d(rs.getBoolean("tela3d"));
                this.setAcessibilidade(rs.getBoolean("acessibilidade"));
                

            }
        } catch (Exception ex) {
            throw new Exception("Falha na Classe Sala: " + ex.getMessage());
        } finally {
            if (rs != null) {
                rs.close();
            }
            if (pstmt != null) {
                pstmt.close();
            }
            if (con != null) {
                con.close();
            }
        }
    }

    /**
     * @return the numero
     */
    public int getNumero() {
        return numero;
    }

    /**
     * @param numero the numero to set
     */
    public void setNumero(int numero) {
        this.numero = numero;
    }

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the quantidade
     */
    public int getQuantidade() {
        return quantidade;
    }

    /**
     * @param quantidade the quantidade to set
     */
    public void setQuantidade(int quantidade) {
        this.quantidade = quantidade;
    }

    /**
     * @return the tamanho_tela
     */
    public int getTamanho_tela() {
        return tamanho_tela;
    }

    /**
     * @param tamanho_tela the tamanho_tela to set
     */
    public void setTamanho_tela(int tamanho_tela) {
        this.tamanho_tela = tamanho_tela;
    }

    /**
     * @return the tela3d
     */
    public Boolean getTela3d() {
        return tela3d;
    }

    /**
     * @param tela3d the tela3d to set
     */
    public void setTela3d(Boolean tela3d) {
        this.tela3d = tela3d;
    }

    /**
     * @return the acessibilidade
     */
    public Boolean getAcessibilidade() {
        return acessibilidade;
    }

    /**
     * @param acessibilidade the acessibilidade to set
     */
    public void setAcessibilidade(Boolean acessibilidade) {
        this.acessibilidade = acessibilidade;
    }

}
